package com.ruoyi.system.service.impl;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import java.util.List;

import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.ruoyi.system.domain.SysClass;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.domain.SysStudent;
import com.ruoyi.system.mapper.SysStudentMapper;
import com.ruoyi.system.service.ISysStudentService;

/**
 * 学生信息Service业务层处理
 *
 * @author chenjiuchang
 * @date 2025-10-16 16:10
 */
@Service
public class SysStudentServiceImpl extends ServiceImpl<SysStudentMapper, SysStudent> implements ISysStudentService {
    @Autowired
    private SysStudentMapper sysStudentMapper;

    /**
     * 查询学生信息列表
     *
     * @param sysStudent 学生信息 orders 排序
     * @return 学生信息
     */
    @Override
    public List<SysStudent> queryList(SysStudent sysStudent, List<OrderItem> orders) {
        return baseMapper.selectByEntity(sysStudent, orders);
    }

    /**
     * 查询学生列表（包含班级名称）
     *
     * @param sysStudent 学生信息
     * @return 学生列表
     */
    @Override
    public List<SysStudent> queryListWithClass(SysStudent sysStudent) {
        // 使用基于注解的多表关联查询
        MPJLambdaWrapper<SysStudent> wrapper = baseMapper.leftJoin(SysClass.class,SysStudent.class, SysClass::getClassId, SysStudent::getClassId)
                .selectAssociation(SysClass.class, SysStudent::getSysClass); // 关键：将班级信息映射到sysClass字段
        return baseMapper.selectJoinList(SysStudent.class, wrapper);
    }

}
